// 商品校验规则
// 商品成交数量 整数最多14位，小数最多5位，且大于0
const gqtyReg = /^(?!^0*(\.0*)?$)(\d{1,14}(\.\d{1,5})?)$/

// 总价整数最多15位，小数最多2位，且大于0
const priceReg = /^(?!^0*(\.0*)?$)(\d{1,15}(\.\d{1,2})?)$/

// 单价整数最多14位，小数最多4位，且大于0
const totalReg = /^(?!^0*(\.0*)?$)(\d{1,14}(\.\d{1,4})?)$/

// 重量整数14位小数5位 且大于0
const wtReg = /^(?!^0*(\.0*)?$)(\d{1,14}(\.\d{1,5})?)$/

// 必填项校验
function requireCheck (value, name = '此项') {
    return value || value === 0 ? '' : `${name}必填`
}

// 不校验
function noCheck (value) {
    return ''
}

export default {
    gqty (value) {
        let err = ''
        if (value || value === 0) {
            if (!gqtyReg.test(value)) {
                err = '成交数量整数最多14位，小数最多5位，且大于0'
            }
        } else {
            err = '成交数量为必填项'
        }
        return err
    },
    declPrice (value) {
        let err = ''
        if (value || value === 0) {
            if (!totalReg.test(value)) {
                err = '单价整数最多14位，小数最多4位，且大于0'
            }
        } else {
            err = '单价为必填项'
        }
        return err
    },
    declTotal (value) {
        let err = ''
        if (value || value === 0) {
            if (!priceReg.test(value)) {
                err = '总价整数最多15位，小数最多2位，且大于0'
            }
        } else {
            err = '总价为必填项'
        }
        return err
    },
    firstQty (value) {
        let err = ''
        if (value || value === 0) {
            if (!gqtyReg.test(value)) {
                err = '法定第一数量整数最多14位，小数最多5位，且大于0'
            }
        } else {
            err = '法定第一数量为必填项'
        }
        return err
    },
    secondQty (value) {
        let err = ''
        if (value || value === 0) {
            if (!gqtyReg.test(value)) {
                err = '法定第二数量整数最多14位，小数最多5位，且大于0'
            }
        }
        return err
    },
    // 商品净重
    invtNetWt (value) {
        let err = ''
        if (value || value === 0) {
            if (!wtReg.test(value)) err = '请输入整数最多14位，小数最多5位且大于0的数字'
        }
        return err
    },
    // 商品毛重
    grossWt (value) {
        let err = ''
        if (value || value === 0) {
            if (!wtReg.test(value)) err = '请输入整数最多14位，小数最多5位且大于0的数字'
        }
        return err
    },
    contrItem (value) {
        let err = ''
        if (value && !/^\d{0,19}$/.test(value)) {
            err = '备案序号长度小于等于19的数字'
        }
        return err
    },
    codeTs (value) {
        let err = ''
        if (value) {
            err = /^\d{10}$/.test(value) ? '' : '商品编号为长度10位的数字'
        } else {
            err = '商品编号为必填项'
        }
        return err
    }, // 商品编号
    goodsName (value) {
        let err = requireCheck(value, '商品名称')
        if (!err && value.length > 255) {
            err = '商品名称的长度小于等于255位'
        }
        return err
    }, // 商品名称
    tradeCurr (value) {
        return requireCheck(value, '币制')
    }, // 币制
    gunit (value) {
        return requireCheck(value, '成交计量单位')
    }, // 成交计量单位
    exgVersion (value) {
        return value && value.length > 8 ? '加工成品版本号长度小于等于8' : ''
    }, // 加工成品版本号
    exgNo (value) {
        return value && value.length > 30 ? '加工成品版本号长度小于等于30' : ''
    }, // 货号
    destinationCountry: requireCheck, // 最终目的国
    originCountry (value) {
        return requireCheck(value, '原产国')
    },
    origPlaceCode: noCheck, // 原产地区
    districtCode (value) {
        let err = requireCheck(value)
        if (!err && ['35029', '44039', '44049', '44059', '46901'].includes(value)) {
            err = '你选择的海关已经声明作废'
        }
        return err
    }, // 境内货源地
    destCode: noCheck, // 产地代码
    dutyMode (value) {
        return requireCheck(value, '征免方式')
    }, // 征免方式
    purpose (value) {
        return requireCheck(value, '用途')
    } // 用途
}
